<?php


namespace app\back\controller;


use app\back\model\OrgModel;
use app\middleware\BackAuth;
use think\facade\Validate;
use app\Request;
use think\response\Json;
use think\validate\ValidateRule;

/**机构管理
 * Class Cooperative
 * @package app\back\controller
 */
class Org
{
    protected $middleware = [BackAuth::class];

    public function getOrgList(Request $request)
    {
        // 获取参数
        $input['limit'] = $request->post('limit');
        $input['page'] = $request->post('page');
        $input['name'] = $request->post('name');
        $input['status'] = $request->post('status');
        // 参数校验
        $validate = Validate::rule([
            'limit' => ValidateRule::isRequire(null, '缺少参数'),
            'page' => ValidateRule::isRequire(null, '缺少参数'),
            'name' => function ($value) {
                return $value === null ? '缺少参数' : true;
            },
            'status' => function ($value) {
                if ($value === null) {
                    return '缺少参数';
                } elseif ($value === '') {
                    return true;
                } elseif ($value == 1 || $value == 2) {
                    return true;
                } else {
                    return '非法数据';
                }
            }
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return OrgModel::getOrgList($input, $request->info);
    }

//    /**获取添加编辑的附属信息
//     * @param Request $request
//     * @return Json
//     */
//    public function getOther(Request $request)
//    {
//        // 逻辑处理
//        return OrgModel::getOther($request->info);
//    }

    /**添加机构
     * @param Request $request
     * @return Json
     */
    public function addOrg(Request $request)
    {
        // 获取参数
        $input['address'] = $request->post('address');
        $input['area'] = $request->post('area');
        $input['city'] = $request->post('city');
        $input['detail'] = $request->post('detail');
        $input['latitude'] = $request->post('latitude');
        $input['longitude'] = $request->post('longitude');
        $input['name'] = $request->post('name');
        $input['province'] = $request->post('province');
        // 参数校验
        $validate = Validate::rule([
            'address' => ValidateRule::isRequire(null, '缺少参数'),
            'area' => ValidateRule::isRequire(null, '缺少参数'),
            'city' => ValidateRule::isRequire(null, '缺少参数'),
            'detail' => ValidateRule::isRequire(null, '缺少参数'),
            'latitude' => ValidateRule::isRequire(null, '缺少参数'),
            'longitude' => ValidateRule::isRequire(null, '缺少参数'),
            'name' => ValidateRule::isRequire(null, '缺少参数'),
            'province' => ValidateRule::isRequire(null, '缺少参数'),
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return OrgModel::addOrg($input, $request->info);
    }

    /**修改机构状态
     * @param Request $request
     * @return Json
     */
    public function changeOrgStatus(Request $request)
    {
        // 获取参数
        $input['id'] = $request->post('id');
        $input['status'] = $request->post('status');
        // 参数校验
        $validate = Validate::rule([
            'id' => ValidateRule::isRequire(null, '缺少参数'),
            'status' => function ($value) {
                if ($value === null) {
                    return '缺少参数';
                } elseif ($value == 1 || $value == 2) {
                    return true;
                } else {
                    return '非法数据';
                }
            }
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return OrgModel::changeOrgStatus($input, $request->info);
    }

    /**删除机构（软删除）
     * @param Request $request
     * @return Json
     */
    public function delOrg(Request $request)
    {
        // 获取参数
        $input['id'] = $request->post('id');
        // 参数校验
        $validate = Validate::rule([
            'id' => ValidateRule::isRequire(null, '缺少参数')
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return OrgModel::delOrg($input, $request->info);
    }

    /**获取单个机构信息
     * @param Request $request
     * @return Json
     */
    public function getOrgOnly(Request $request)
    {
        // 获取参数
        $input['id'] = $request->post('id');
        // 参数校验
        $validate = Validate::rule([
            'id' => ValidateRule::isRequire(null, '缺少参数')
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return OrgModel::getOrgOnly($input, $request->info);
    }

    /**编辑机构
     * @param Request $request
     * @return Json
     */
    public function editOrg(Request $request)
    {
        // 获取参数
        $input['id'] = $request->post('id');
        $input['address'] = $request->post('address');
        $input['area'] = $request->post('area');
        $input['city'] = $request->post('city');
        $input['detail'] = $request->post('detail');
        $input['latitude'] = $request->post('latitude');
        $input['longitude'] = $request->post('longitude');
        $input['name'] = $request->post('name');
        $input['province'] = $request->post('province');
        // 参数校验
        $validate = Validate::rule([
            'id' => ValidateRule::isRequire(null, '缺少参数'),
            'address' => ValidateRule::isRequire(null, '缺少参数'),
            'area' => ValidateRule::isRequire(null, '缺少参数'),
            'city' => ValidateRule::isRequire(null, '缺少参数'),
            'detail' => ValidateRule::isRequire(null, '缺少参数'),
            'latitude' => ValidateRule::isRequire(null, '缺少参数'),
            'longitude' => ValidateRule::isRequire(null, '缺少参数'),
            'name' => ValidateRule::isRequire(null, '缺少参数'),
            'province' => ValidateRule::isRequire(null, '缺少参数')
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return OrgModel::editOrg($input, $request->info);
    }

//    /**获取有效的管理员列表
//     * @param Request $request
//     * @return Json
//     */
//    public function getAdmin(Request $request)
//    {
//        // 获取参数
//        // 参数校验
//        // 逻辑处理
//        return OrgModel::getAdmin($request->info);
//    }

//    /**绑定司机
//     * @param Request $request
//     * @return Json
//     */
//    public function bindDriver(Request $request)
//    {
//        // 获取参数
//        $input['id'] = $request->post('id');
//        $input['driver_id'] = $request->post('driver_id');
//        // 参数校验
//        $validate = Validate::rule([
//            'id' => ValidateRule::regex('/^[1-9][0-9]*$/', '不合法数据'),
//            'driver_id' => ValidateRule::regex('/^[1-9][0-9]*$/', '不合法数据'),
//        ]);
//
//        if (!$validate->check($input)) {
//            return jsonFail($validate->getError());
//        }
//        // 逻辑处理
//        return OrgModel::bindDriver($input,$request->info);
//    }

//    /**解绑司机
//     * @param Request $request
//     * @return Json
//     */
//    public function unbindDriver(Request $request)
//    {
//        // 获取参数
//        $input['id'] = $request->post('id');
//        $input['driver_id'] = $request->post('driver_id');
//        // 参数校验
//        $validate = Validate::rule([
//            'id' => ValidateRule::regex('/^[1-9][0-9]*$/', '不合法数据'),
//            'driver_id' => ValidateRule::regex('/^[1-9][0-9]*$/', '不合法数据'),
//        ]);
//
//        if (!$validate->check($input)) {
//            return jsonFail($validate->getError());
//        }
//        // 逻辑处理
//        return OrgModel::unbindDriver($input,$request->info);
//    }
}